package demo.practice.linklist;

import demo.practice.ListNode;



public class P1669 {

    /**
     *
     输入：list1 = [0,1,2,3,4,5], a = 3, b = 4, list2 = [1000000,1000001,1000002]
     输出：[0,1,2,1000000,1000001,1000002,5]
     解释：我们删除 list1 中第三和第四个节点，并将 list2 接在该位置。上图中蓝色的边和节点为答案链表。

     3 <= list1.length <= 104
     1 <= a <= b < list1.length - 1
     1 <= list2.length <= 104
     */
    public ListNode mergeInBetween(ListNode list1, int a, int b, ListNode list2) {

        //思路，1、找到a-1的位置，将list2的head连载 上面
        //     2、找到b+1的位置，将其连接到list2的末尾
        //     3、返回list1的head
        ListNode current=list1;
        int index=0;
        while (index<a-1){
            current=current.next;
            index++;//指针向下指一个
        }

        //此时index=a-1;
        ListNode befor=current;

        while (index<b){
            current=current.next;
            index++;//指针向下指一个
        }

        ListNode tail=current;
        //此时index=b
        befor.next=list2;

        current=list2;
        while (current.next!=null){
            current=current.next;
        }
        //此时current在list2尾部
        current.next=tail.next;

        return list1;
    }

}
